﻿using System;
using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;
using System.Web.Mvc;

namespace AceMobile.Models
{
    public class Account
    {
        public int ID { get; set; }

        [Display(Name = "Tên người dùng")]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn phải điền vào trường này")]
        public String UserName { get; set; }

        [DataType(DataType.Password)]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn phải điền vào trường này")]
        [Display(Name = "Mật khẩu")]
        public String Password { get; set; }

        [DataType(DataType.EmailAddress, ErrorMessage = "Bạn phải nhập đúng dạng địa chỉ email VD: didongace@gmail.com")]
        [Required(AllowEmptyStrings = true)]
        [Display(Name = "Địa chỉ mail")]
        public string Email { get; set; }

        [MaxLength(200)]
        [Display(Name = "Địa chỉ nhà bạn")]
        public string Address { get; set; }
        [MaxLength(200)]
        [Display(Name = "Số điện thoại"), DataType(DataType.PhoneNumber)]
        public string MobilePhone { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Cần phải điền cụm từ gợi nhớ mật khẩu, nó sẽ giúp ích khi bạn không nhớ mật khẩu.")]
        [Display(Name = "Gợi nhớ mật khẩu")]
        public string SecretQuestion { get; set; }

        public int? RoleID { get; set; }

        [ForeignKey("RoleID")]
        public virtual Roles Role { get; set; }
    }

    public class AccountLogOn
    {
        [Display(Name = "Tên người dùng")]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn phải điền vào trường này")]
        public String UserName { get; set; }

        [DataType(DataType.Password)]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn phải điền mật khẩu")]
        [Display(Name = "Mật khẩu")]
        public String Password { get; set; }

        [Display(Name = "Ghi nhớ đăng nhập")]
        public bool RememberMe { get; set; }
    }

    public class AccountChangePassword
    {
        [DataType(DataType.Password)]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn phải điền vào trường này")]
        [Display(Name = "Mật khẩu cũ")]
        public String OldPassword { get; set; }

        [DataType(DataType.Password)]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn phải điền vào trường này")]
        [Display(Name = "Mật khẩu mới")]
        public String NewPassword { get; set; }

        [DataType(DataType.Password)]
        [Compare("NewPassword", ErrorMessage = "Phải trùng với mật khẩu mới")]
        [Display(Name = "Nhập lại mật khẩu")]
        public String NewPasswordConfirm { get; set; }
    }

    public class AccountRegister
    {
        [Display(Name = "Tên người dùng")]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn phải điền vào trường này")]
        public String UserName { get; set; }

        [DataType(DataType.Password)]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn phải điền vào trường này")]
        [Display(Name = "Mật khẩu")]
        public String Password { get; set; }

        [DataType(DataType.Password)]
        [Compare("Password", ErrorMessage = "Mật khẩu nhập lại không khớp nhau")]
        [Display(Name = "Nhập lại mật khẩu")]
        public String PasswordConfirm { get; set; }

        [DataType(DataType.EmailAddress, ErrorMessage = "Bạn phải nhập đúng dạng địa chỉ email VD: didongace@gmail.com")]
        [Required(AllowEmptyStrings = true)]
        [Display(Name = "Địa chỉ mail")]
        public string Email { get; set; }
        [MaxLength(200)]
        [Display(Name = "Số điện thoại"), DataType(DataType.PhoneNumber)]
        public string MobilePhone { get; set; }

        [MaxLength(200)]
        [Display(Name = "Địa chỉ nhà bạn")]
        public string Address { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Cần phải điền cụm từ gợi nhớ mật khẩu, nó sẽ giúp ích khi bạn không nhớ mật khẩu.")]
        [Display(Name = "Gợi nhớ mật khẩu")]
        public string SecretQuestion { get; set; }

    }
}
